package com.spgf.model.entities;

import com.spgf.model.entities.utils.ModelAb;
import com.spgf.model.enums.TipoCategoria;

public class CategoriaModel extends ModelAb {

	private CategoriaModel	categoriaSuperior;

	private Integer			codigo;

	private Integer			cor;

	private String			nome;

	private String			sigla;

	private TipoCategoria	tipo;

	private Double			valorOrcado;

	// Transiente
	private Double			valorTotal;

	public CategoriaModel() {}

	public CategoriaModel(final Integer codigo) {
		this();
		this.codigo = codigo;
	}

	public CategoriaModel(final String nome) {
		this.nome = nome;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof CategoriaModel)) {
			return false;
		}
		CategoriaModel other = (CategoriaModel) obj;
		if (codigo == null) {
			if (other.codigo != null) {
				return false;
			}
		} else if (!codigo.equals(other.codigo)) {
			return false;
		}
		return true;
	}

	public CategoriaModel getCategoriaSuperior() {
		return categoriaSuperior;
	}

	@Override
	public Integer getCodigo() {
		return codigo;
	}

	public Integer getCor() {
		return cor;
	}

	public String getNome() {
		return nome;
	}

	public String getSigla() {
		return sigla;
	}

	public TipoCategoria getTipo() {
		return tipo;
	}

	/**
	 * @return the valorOrcado
	 */
	public Double getValorOrcado() {
		return valorOrcado;
	}

	public Double getValorTotal() {
		return valorTotal;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
		return result;
	}

	public void setCategoriaSuperior(CategoriaModel categoriaSuperior) {
		this.categoriaSuperior = categoriaSuperior;
	}

	public void setCodigo(final Integer codigo) {
		this.codigo = codigo;
	}

	public void setCor(Integer cor) {
		this.cor = cor;
	}

	public void setNome(final String nome) {
		this.nome = nome;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public void setTipo(final TipoCategoria tipo) {
		this.tipo = tipo;
	}

	/**
	 * @param valorOrcado
	 *            the valorOrcado to set
	 */
	public void setValorOrcado(Double valorOrcado) {
		this.valorOrcado = valorOrcado;
	}

	public void setValorTotal(Double valorTotal) {
		this.valorTotal = valorTotal;
	}

	@Override
	public String toString() {
		return getNome();
	}

}
